// SPU管理模块的接口
import request from "@/utils/request";
import {
  SPUData,
  HasSpuResponseData,
  AllTrademark,
  SpuHasImg,
  SaleAttrResponseData,
  HasSaleAttrResponseData,
  SkuData,
  SkuInfoData,
} from "./type";

enum API {
  // 获取已有的SPU数据
  HASSPU_URL = "/admin/product/",
  // 获取全部品牌数据
  ALLTRADEMARK_URL = "/admin/product/baseTrademark/getTrademarkList",
  // 获取某个SPU商品图片数组
  IMAGE_URL = "/admin/product/spuImageList/",
  // 获取某个SPU的销售属性接口
  SPUHASSALEATTR_URL = "/admin/product/spuSaleAttrList/",
  // 获取整个项目全部的销售属性[颜色、版本、尺码]
  ALLSALEATTR_URL = "/admin/product/baseSaleAttrList",
  // 新增一个SPU
  ADDSPU_URL = "admin/product/saveSpuInfo",
  // 修改一个SPU
  UPDATESPU_URL = "admin/product/updateSpuInfo",
  // 新增SKU
  ADDSKU_URL = "/admin/product/saveSkuInfo",
  // 根据spuid查找所有sku
  SKUINFO_URL = "/admin/product/findBySpuId/",
  // 删除一个SPU
  DELETESPU_URL = "/admin/product/deleteSpu/"
}

// 获取某个分类下已有的SPU数据
export const reqHasSpu = (
  page: number,
  limit: number,
  category3Id: number | string,
) =>
  request.get<any, HasSpuResponseData>(
    API.HASSPU_URL + `${page}/${limit}?category3Id=${category3Id}`,
  );
// 获取全部SPU品牌数据
export const reqAllTrademark = () =>
  request.get<any, AllTrademark>(API.ALLTRADEMARK_URL);
// 获取某个SPU商品图片
export const reqSpuImageList = (spuId: number) =>
  request.get<any, SpuHasImg>(API.IMAGE_URL + spuId);
// 获取某一个已有的SPU的销售属性
export const reqSpuHasSaleAttr = (spuId: number) =>
  request.get<any, SaleAttrResponseData>(API.SPUHASSALEATTR_URL + spuId);
// 获取整个项目全部的销售属性[颜色、版本、尺码]
export const reqAllSaleAttr = () =>
  request.get<any, HasSaleAttrResponseData>(API.ALLSALEATTR_URL);
// 新增或修改一个SPU
export const reqAddOrUpdateSpu = (data: SPUData) => {
  if (data.id) {
    return request.post<any, any>(API.UPDATESPU_URL, data);
  } else {
    return request.post<any, any>(API.ADDSPU_URL, data);
  }
};
// 新增一个SKU
export const reqAddSku = (data: SkuData) =>
  request.post<any, any>(API.ADDSKU_URL, data);
// 根据spuid查找所有sku
export const reqSkuList = (spuId: number | string) =>
  request.get<any, SkuInfoData>(API.SKUINFO_URL + spuId);
export const reqDeleteSpu = (spuId: number | string) =>
  request.delete<any, any>(API.DELETESPU_URL + spuId);
